package cn.tedu.mybatis;

import cn.tedu.dao.DeptDao;
import cn.tedu.pojo.Dept;
import cn.tedu.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import org.junit.jupiter.api.BeforeEach;


import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class Test1 {

    private SqlSessionFactory factory;
    //在@Test这个执行前
    @Before  //@BeforeEach
    public void init() throws IOException {
        //1.读取核心配置文件
        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");

        //2.创建会话工厂
        factory = new SqlSessionFactoryBuilder().build(in);
    }
    @Test
    public void getById()throws IOException {
        //3.打开sql会话
        SqlSession session = factory.openSession();

        DeptDao dao = session.getMapper(DeptDao.class);//获取指定接口的文件
        Dept d = dao.getById();
        System.out.println(d);
    }



//    @Test
//    public void getAll() throws IOException {
//        //1.读取核心配置文件
//        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
//
//        //2.创建会话工厂
//        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//
//        //3.打开sql会话
//        SqlSession session = factory.openSession();
//
//        //4.执行sql
//        List<User> list = session.selectList("userMapperNS.get");
//
//        //5.遍历list并打印
//        for (User u : list) {
//            System.out.println(u);
//        }
//
//        //Mybatis为了提高查询效率，会提供缓存技术--减少了和数据库的交互次数
//        //当第一次查询数据时，缓冲中当然没有，直接发起sql语句查询数据库
//
//        //查询一条数据
//        User user = (User) session.selectOne("userMapperNS.getById");
//        System.out.println(user);
//    }

//    @Test
//    public void inter() throws IOException {
//        //1.读取核心配置文件
//        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
//        //2.创建会话工厂
//        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//        //3.开启会话
//        SqlSession session = factory.openSession();
//        //4.执行sql--参数是接口文件的class对象
//        DeptDao dao = session.getMapper(DeptDao.class);
//        List<Dept> list = dao.getAll();
//
//        for (Dept d : list){
//            System.out.println(d);
//        }
//    }
}
